In modern data telecommunication, raw data is modulated (encoded, or simply coded) into PCM signals and then are transmitted to a destination terminal or terminals. The received PCM signals are then demodulated (decoded) into the identical raw data at the destination. There are numerous encoding (coding) and decoding schemes (also called formats). A specific coding scheme (or format) is chosen for a particular application, based upon required performance criteria, cost effectiveness, the type of transmission path to be used, etc. It is therefore very common that the raw data is coded and decoded many times in different formats as they travel through the communication path from one level to another before they reach the destination.
The present invention relates to a new line code, the term generally used for a data transmission coding scheme and format, which finds particular application in high speed serial data links, optical and non-optical. Line coding is used to create favourable statistical properties in a transmitted signal. In addition to essential requirements of being transparent and uniquely decodable etc., a line code must exhibit some other features. Three important qualities are its dc balance, transition density (and run bound), and bandwidth requirements. An additional practical requirement of the code is that it be simple to implement, at high speed where memory lookup implementations are impractical.
The dc balance (or dc component) is the shift of the transmitted center level created by the average time the signal is on to the time it is off. With code format, it is the pattern of the positive pulse duration and timing to that of the negative pulse or in most instances, it is the algebraic difference between the number of logical ones and the number of logical zeros. Any drift of the transmitted signal from the center baseline level will create a dc imbalance and affects the performance of the communication operation. The line code must therefore have a minimum or zero dc balance.
Decoding the data in the reciever can only be achieved if the clock timing of the receiver is fully synchronized with that of the transmitter. Since the only connection betwwen the receiver and transmitter is via a data link, the timing points must be recovered out of the received signal stream. That is, each symbol level transition, or in effect the crossing of the zero level, will represent a clock timing. This will call for code formats with as many transitions as possible, with the ideal situation of possessing the characteristics of one transition for each coded bit in the stream. Code formats, which provide enough transitions from which the receiver can recover both the clock timing and the data, are referred to as self-clocking codes. Coded data telecommunication also often requires framing of bits and usually a frame bit inserted at regular intervals in a specific pattern indicates the boundary of a frame.
Available bandwidth has an upper limit, in which transmission rates that exceed will cause intersymbol interference. Therefore if the transmission rate out of the decoder is higher than the link rate, there might be a need for a reduction in the data rate produced by the source before the signal can be transmitted over the link. As mentioned earlier, the data is converted from one code into another as it travels through the transmission path. It is quite common in practice to add extra bits into a code word, when the code is converted, for the purpose of ensuring more control functions, more error checking etc. Therefore the bandwidth consideration becomes important.
Among many coding schemes in use today for high speed serial data links, some of the most popular are scrambling, Manchester, Miller, and nBmB (e.g. FDDI (Fiber Distributed Data Interface) 4B5B code).
Scrambling improves the statistics of transition density and dc balance without increasing the required bandwidth. It cannot, however, bound the worst case of these properties. The Manchester code ensures a transition for every bit and perfect dc balance. However, it requires twice the transmission bandwidth (prior to framing overhead). The Miller code requires only a modest increase in the transmission bandwidth (prior to framing overhead), but requires a double frequency clock to recover the data. The FDDI 4B5B block code has a 20% increase in bandwidth and it does bound the dc balance and transition density. It does not include framing allocation. Many other coding schemes have been devised to improve transmission characteristics. It should also be noted that many schemes, including some mentioned above, require framing bits as an integral part so that any further modification such as the length of a block etc. may not be possible.
Other codes using inversion of blocks to preserve dc balance are described in U.S. Pat. Nos. 4,408,189, issued on Oct. 4, 1983 to Betts et al, and 4,528,550, issued on Jul. 9, 1985 to Graves.